// #include<cstdlib>
// #include<cstdio>
// #include<unistd.h>
// #include<cstring>
// #include<unistd.h>
// #include<sys/wait.h>
// #include<string>
// using namespace std;

// const char* GetHost()
// {
//     // return getenv("HOSTNAME");
//     static char hostname[256];
//    if(gethostname(hostname,sizeof(hostname))== 0)
//    {
//         return hostname;
//    }
//    else
//         return nullptr;
// }
// const char* GetPwd()
// {
//     return getenv("PWD");
// }
// const char* GetName()
// {
//     return getenv("LOGNAME");
// }
// string Format(const char* obj)
// {
//     string st(obj);
//     auto pos = st.rfind('/');
//     // string st1(st.begin()+pos+1 , st.end());
//     // return st1.c_str();  //局部变量,悬垂指针!!!!!!!!
//     return string(st.begin()+pos+1 , st.end());
// }

// void PromtDisplay()
// {
//     string pwd = Format(GetPwd());
//     printf("%s@%s:%s$",GetName(),GetHost(),pwd.c_str());
//     //printf("%s@%s:%s$",GetName(),GetHost(),GetPwd());
// }

// bool MakePromt(char* pwd_prompt , int size)
// {
    
//     if(fgets(pwd_prompt , size ,stdin) == nullptr)
//     {

//         return false;
//     }
//     else
//     {
//         pwd_prompt[strlen(pwd_prompt)-1] = '\0';
//         return true;
//     }
// }

// #define INPUT_NUM 1024
// char* GetInput(char* input)
// {   
    
//     if(MakePromt(input,INPUT_NUM) == false)
//     {
//         return nullptr;
//     }
//     else
//     {
//         return input;
//     }
// }
// extern char* argv[1024];
// void ParseInput(char* input)
// {
//     int i = 0;
//     argv[i++] = strtok(input," ");

//     while(argv[i++] = strtok(nullptr , " ")){}


// }

// bool IsBuiltIn()
// {
//     const char* command = argv[0];
//     if(strcmp(command , "cd") == 0)
//     {
//         if(argv[1])
//             chdir(argv[1]);
//         return true;
//     }
//     else if(strcmp(command , "export"))
//     {
//         //AddEnv
//     }
//     else if(strcmp(command , "env"))
//     {

//     }
//     else
//     {
//         return false;
//     }
//     return false;
// }

// void Execute()
// {
//     int ret = fork();
//     if(ret == 0)
//     {
//         execvp(argv[0],argv);
//         perror("child failed\n"); //defensive coding
//         exit(1);
//     }

//     int state = 0;
//     waitpid(ret,&state,0);    
// }

// extern char*  argc[1024] ;
// void InitEnv()
// {
//     int i = 0;
//     for( ; environ[i] ; i++)
//     {
//         argc[i] = (char*)malloc(strlen(environ[i])+1);
//         //argc[i] = environ[i];
//         strcpy(argc[i],environ[i]);
//     }
//     argc[i] = nullptr;
    
// }


